Техническое задание: Проект: Telegram-бот для выдачи данных из прайс-листа Excel под высокую нагрузку (до 1000 одновременных запросов) 1. Цель Разработать Telegram-бота, который принимает запросы пользователей (поиск товара, вывод цены, остатков) и возвращает данные из прайс-листа. Бот должен выдерживать пиковую нагрузку до 1000 одновременных обращений без блокировок и сбоев. 2. Функциональные требования * Команда /start — приветствие и главное меню. * Поиск товара по названию, артикулу или категории. * Вывод цены, описания и наличия. * Админ-панель для загрузки/обновления Excel-файла с прайсом. * Автоматическая синхронизация Excel → база данных (PostgreSQL). * Пагинация результатов поиска (если товаров много). 3. Технические требования * Язык: Python 3.11+ (aiogram 3.x) или Node.js (grammY) — на выбор исполнителя с обоснованием. * База данных: PostgreSQL (развернуть на том же VPS). * Хостинг: VPS с 2+ vCPU, 4 ГБ RAM, NVMe SSD, ОС Ubuntu 22.04/24.04. * Rate limiting: подключить AIORateLimiter (для Python) или @puregram/throttler (для Node.js) с глобальным лимитом 25–30 запросов/сек. * Асинхронная обработка входящих: использовать grammY runner или пул асинхронных воркеров. * Опционально: поддержка allow_paid_broadcast для массовых рассылок (если потребуется). * Логирование ошибок и автоматический retry при RetryAfter (429). * Развёртывание через Docker Compose или systemd. 4. Сценарии использования 1. Пользователь пишет /start → бот показывает меню. 2. Пользователь вводит «цемент М500» → бот ищет в БД → выдаёт цену и наличие. 3. Админ загружает новый Excel → бот пересобирает таблицу в БД → данные обновлены. 4. 1000 пользователей одновременно ищут товар → бот отвечает всем в течение приемлемого времени (с учётом лимитов Telegram). 5. Результат работы * Исходный код в Git-репозитории. * Инструкция по развёртыванию на VPS. * Настроенный rate limiter и мониторинг. * Тестовый прогон под нагрузкой (эмуляция 1000 запросов). 6. Сроки и оплата * Срок: 7–14 дней. * Бюджет: обсуждается (ориентир — от 15 000 ₽ Бот Меню Товары с фото (подтягивает из базы данных) Итоговая цена Куаркод для оплаты Пример stemsbot бот переходит в мини-приложение+ заказа+оплата